package com.my.db.test.mybatis.base;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * @author timo 2021/3/12
 */
@Data
public class BaseEntity implements Serializable {
    @JsonSerialize(
            using = ToStringSerializer.class
    )
    @TableId(
            value = "id",
            type = IdType.ASSIGN_ID
    )
//    @TableId(value = "id", type = IdType.ASSIGN_UUID)
//    private String id;
    private Long id;
    /**创建人*/
    @JsonSerialize(
            using = ToStringSerializer.class
    )
    private Long createUser;
//    /**创建部门*/
//    @JsonSerialize(
//            using = ToStringSerializer.class
//    )
//    private Long createDept;
    /**创建时间*/
    @DateTimeFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    private Date createTime;
    /**更新人*/
    @JsonSerialize(
            using = ToStringSerializer.class
    )
    private Long updateUser;
    /**更新时间*/
    @DateTimeFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    private Date updateTime;
    /**业务状态*/
//    临时屏蔽
    @TableField(exist = false)
    private Integer status;
    /**是否已删除*/
    //@TableField(exist=false)注解加在bean属性上，表示当前属性不是数据库的字段，但在项目中必须使用。
//    @TableLogic //逻辑删除 会在查询的是否自动带上WHERE  is_deleted=0
    //    临时屏蔽
    @TableField(exist = false)
    private Integer isDeleted;

}
